def init_function(context):
    # 设定沪深300作为基准
    context.set_benchmark('000300')
    context.set_capital(100000)
    context.set_option('use_real_price', True)
    return context


# 开盘时运行的函数
def on_market_open(context):
    context.send_message(title='开盘了', context='美好的一天')
    close_data = context.get_data(context.exchange, count=5, unit='1d', fields=['close'])
    # 取得过去五天的平均价格
    MA5 = close_data['close'].mean()
    # 取得上一时间点价格
    current_price = close_data['close'][-1]
    security = context.security[0]
    # 取得当前的现金
    cash = context.available_cash
    if (current_price > 1.01 * MA5) and (cash > 0):
        # 记录这次买入
        context.system.log.info("价格高于均价 1%%, 买入 %s" % (security))
        context.system.log.info("当前可用资金为{0}, position_value为{0}".format(cash, context.positions_value))
        # 用所有 cash 买入股票
        context.order_buy(security, cash)
    # 如果上一时间点价格低于五天平均价, 则空仓卖出
    elif current_price < MA5 and context.get_openinterest(security) > 0:
        # 记录这次卖出
        context.system.log.info("价格低于均价, 卖出 %s" % (security))
        # 卖出所有股票,使这只股票的最终持有量为0
        context.order_sell(security, 0)
    return context


def before_market_open(context):

    return context


def market_open(context):
    return context


def after_market_close(context):
    context.system.log.info(str('函数运行时间(after_market_close):' + str(context.current_dt.time())))
    # 得到当天所有成交记录
    trades = context.get_trades()
    for _trade in trades.values():
        context.system.log.info('成交记录：' + str(_trade))
    context.system.log.info('一天结束')
    context.system.log.info('##############################################################')
    return context
